﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Runtime.Serialization;
using System.Xml.Serialization;

namespace AddIn.EA.Architecture.ComponentLogic.StandardProject
{
    [Serializable(),
    XmlInclude(typeof(PropertyStandardProject)),
    XmlInclude(typeof(Builders.UI.ElementBuilderCommunication)),
    XmlInclude(typeof(Builders.UI.ElementBuilderModel)),
    XmlInclude(typeof(Builders.UI.ElementBuilderPresenter)),
    XmlInclude(typeof(Builders.Service.ElementBuilderBusinessEntity)),
    XmlInclude(typeof(Builders.Service.ElementBuilderBusinessLogic)),
    XmlInclude(typeof(Builders.Service.ElementBuilderDataContract)),
    XmlInclude(typeof(Builders.Service.ElementBuilderResourceAccess)),
    XmlInclude(typeof(Builders.Service.ElementBuilderServiceContractImplementation)),
    XmlInclude(typeof(Builders.Process.ElementBuilderProcessCommunication)),
    XmlInclude(typeof(Builders.Process.ElementBuilderProcessClient)),
    XmlInclude(typeof(Builders.Process.ElementBuilderProcessEntity)),
    XmlInclude(typeof(Builders.Process.ElementBuilderProcessImplementation)),
    XmlInclude(typeof(Builders.Process.ElementBuilderProcessLogic)),
    XmlInclude(typeof(Builders.Process.ElementBuilderProcessResourceAccess))]
    public class BusinessEntityStandardProject : BusinessEntity, ISerializable
    {
        [XmlElement("NamePlural")]
        public String NamePlural { get; set; }
        [XmlElement("IsAbstract")]
        public Boolean IsAbstract { get; set; }
        [XmlElement("Methods")]
        public List<MethodStandardProject> Methods { get; set; }
        [XmlElement("Properties")]
        public override List<Property> Properties { get; set; }
        [XmlElement("Builders")]
        public List<Builders.ElementBuilder> Builders { get; set; }

        public BusinessEntityStandardProject()
        {
            Properties = new List<Property>();
            Methods = new List<MethodStandardProject>();
            Builders = new List<Builders.ElementBuilder>();
        }

        #region ISerializable Members

        public void GetObjectData(SerializationInfo info, StreamingContext context)
        {
            throw new NotImplementedException();
        }

        #endregion
    }
}
